FPGAs provide designers with flexibility in designing systems for information/data processing. By having the ability to program or configure the FPGA, designers can effectively change the system specifications or performance. Further, end users may configure or program the FPGA to suit their applications.
Typical FPGAs include programmable logic circuitry and interconnect in their fabric. To provide system designers or users with increased functionality or flexibility, some FPGAs also include hardened circuitry. Examples of hardened circuitry include memory controllers, memory, processors, etc.